package com.itzmn.leetcode;

import java.util.HashMap;

/**
 * @Author: 张梦楠
 * @Date: 2018/11/12 11:13
 * 简书：https://www.jianshu.com/u/d611be10d1a6
 * 码云：https://gitee.com/zhangqiye
 * @Description: 无重复字符的最长子串
 * 给定一个字符串，找出不含有重复字符的最长子串的长度。
 *
 *  思路：
 *  假设最长为0，然后遍历这个字符串，遍历次数为数组长度（可优化,查询到的最大长度和后面剩余次数一样的时候就不用查了），每一遍都计算字符出现的次数，
 *      一旦重复记录最长，然后跳出循环，开始下一次遍历
 */
public class LengthOfLongestSubstring {

    public static void main(String[] args) {

        new LengthOfLongestSubstring().lengthOfLongestSubstring("  ");
    }

    public int lengthOfLongestSubstring(String s) {

        if (s.equals("")){
            return 0;
        }
        //假设最长为1
        int max = 1;
        String[] split = s.split("");
        HashMap<String, Integer> map = new HashMap<>();


        for (int i=0;max<split.length-i;i++){
            int m=0;
            for (int j=i;j<split.length;j++){
                if (map.containsKey(split[j])){
                    //max = m;
                    map.clear();
                    break;
                }else {
                    map.put(split[j],1);
                    m++;
                    if (m>max){
                        max=m;
                    }
                }
            }

        }
        return max;
    }

}
